from typing import Any, List, Optional


class NormalizedContent:
    def __init__(self, platform: str, content_id: str, author: Optional[str] = None, title: Optional[str] = None, text: Optional[str] = None, url: Optional[str] = None, published_at: Optional[str] = None, metrics: Optional[dict] = None, raw: Optional[dict] = None):
        self.platform = platform
        self.content_id = content_id
        self.author = author
        self.title = title
        self.text = text
        self.url = url
        self.published_at = published_at
        self.metrics = metrics or {}
        self.raw = raw or {}


class PlatformAdapter:
    async def search_by_keywords(self, keywords: List[str], time_start: Optional[str], time_end: Optional[str]) -> List[NormalizedContent]:
        return []

    async def fetch_by_accounts(self, accounts: List[str], time_start: Optional[str], time_end: Optional[str]) -> List[NormalizedContent]:
        return []
